////////////////////////////////////////////////////////////////////////////////

#ifndef _WEAPON_H_
#define _WEAPON_H_

////////////////////////////////////////////////////////////////////////////////

#ifndef _BULLET_H_
#include "bullet.h"
#endif

////////////////////////////////////////////////////////////////////////////////


/** Base class for all weapons
*
*  @author   Anastasia Karpinska
*  @since    Nov 11th, 2009
*  @updated  Nov 12th, 2009
*/
class Weapon
{
////////////////////////////////////////////////////////////////////////////////

public:

////////////////////////////////////////////////////////////////////////////////


    /** Constructor */
    Weapon();


    /** Destructor */
    virtual ~Weapon();


////////////////////////////////////////////////////////////////////////////////


    /** Returns ID */
    int GetID() const;


    /** Returns attack speed */
    size_t GetReloadTime() const;


////////////////////////////////////////////////////////////////////////////////


    /** Try to shoot a bullet, specific to each weapon */
    virtual Bullet* Shoot( int _ID,
                           PE::Point _position,
                           PE::Direction _direction );


////////////////////////////////////////////////////////////////////////////////

private:

////////////////////////////////////////////////////////////////////////////////


    /** Weapon ID */
    int m_ID;


    /** Reload time */
    size_t m_ReloadTime;


////////////////////////////////////////////////////////////////////////////////
};

////////////////////////////////////////////////////////////////////////////////

#endif

////////////////////////////////////////////////////////////////////////////////
